package design_pattern.FactoryModelUse;

import design_pattern.FactoryModelUse.Factory.UserInfoFactory;
import design_pattern.FactoryModelUse.Product.QueryInfo;
import design_pattern.FactoryModelUse.Product.User;

/**
 * @Description
 * @Author yangshunjie
 * @Date 2021/9/20
 */
public class main {
    public static void main(String[] args) {

        UserInfoFactory userInfoFactory = new UserInfoFactory();

        QueryInfo queryInfo = new QueryInfo();
        //QueryInfo queryInfo = null;  //参数校验抛异常
        queryInfo.setUserId("12345");

        //如果需要创建不同的类，就需要创建不同的工程。
        //和简单工厂看上去没什么区别
        //核心就是，工厂都是有一个抽象工厂作为父类
        //只需要修改具体工厂，在主代码中不需要改动。
        User user = userInfoFactory.createUser(queryInfo);
        //弊端在于新增类会新增工厂
        //只输出大的类，我不告诉你具体是哪个子类，你自己找工厂去。


        //user可以继续做一些后续的工作

        System.out.println(user);
    }
}
